package com.itheima.test6;

public class StudentTest {
        /*定义一个长度为3的数组，数组存储1~3名学生对象作为初始数据，学生对象的学号，姓名各不相同。
    学生的属性:学号，姓名，年龄。
    要求1:再次添加一个学生对象，并在添加的时候进行学号的唯一性判断。
    要求2:添加完毕之后，遍历所有学生信息。
    要求3:通过id删除学生信息
    如果存在，则删除，如果不存在，则提示删除失败。
    要求4:删除完毕之后，遍历所有学生信息。
    要求5:查询数组id为“heima002”的学生，如果存在，则将他的年龄+1岁*/

    public static void main(String[] args) {
        //定义数组保存学生信息

        Student[] arr = new Student[3];

        Student st1 = new Student(1,"张三",20);
        Student st2 = new Student(2,"李四",22);
        Student st3 = new Student(3,"王五",21);

        arr[0] = st1;
        arr[1] = st2;
        arr[2] = st3;

        //1.再次添加一个学生对象，并在添加的时候进行学号的唯一性判断。
        //判断是否已经存在

        Student st4 = new Student(4,"zq",23);

        boolean flag = existence(arr,st4.getId());
        if (flag){//已存在
            System.out.println("该学生已经存在,请重新输入");
        }else {//不存在
            //如果不存在，需要先把创建新的数组，把原来的数据拷贝之后再添加新的数据
            //判断原来的数组是否已经存满
            int count = getSize(arr);
            //已存满
            if (count == arr.length){
                Student[] newArr = addStudent(arr);
                newArr[count] = st4;
                print(newArr);
            }else { //未存满
                arr[count] = st4;
                print(arr);
            }
        }

    }

    public static void print(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null){
                Student st = arr[i];
                System.out.println(st.getId() + "," + st.getName() + "," + st.getAge());
            }
        }
    }

    public static int getSize(Student[] arr){
        int count = 0;

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null){
                count++;
            }
        }

        return count;

    }
    //新增学生
    public static Student[] addStudent(Student[] arr){
        //动态创建数组
        Student[] newArr = new Student[arr.length + 1];
        //遍历拷贝数据
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }

        return newArr;
    }

    //判断是否学生是否存在
    public static boolean existence(Student[] arr,int id){
        boolean flag = false;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null){
                Student st = arr[i];
                if (st.getId() == id){
                    flag = true;
                }
            }
        }
        return flag;
    }
}
